package com.ruoyi.teacher.service.impl;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.teacher.dto.TeacherTaskDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.teacher.mapper.TTeacherTaskMapper;
import com.ruoyi.teacher.domain.TTeacherTask;
import com.ruoyi.teacher.service.ITTeacherTaskService;

/**
 * 我的任务Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-12-24
 */
@Service
public class TTeacherTaskServiceImpl implements ITTeacherTaskService 
{
    @Autowired
    private TTeacherTaskMapper tTeacherTaskMapper;

    /**
     * 查询我的任务
     * 
     * @param id 我的任务主键
     * @return 我的任务
     */
    @Override
    public TTeacherTask selectTTeacherTaskById(Long id)
    {
        return tTeacherTaskMapper.selectTTeacherTaskById(id);
    }

    /**
     * 查询我的任务列表
     * 
     * @param tTeacherTask 我的任务
     * @return 我的任务
     */
    @Override
    public List<TTeacherTask> selectTTeacherTaskList(TTeacherTask tTeacherTask)
    {
        String username = SecurityUtils.getUsername();
        if (username.equals("admin")){
            tTeacherTask.setTeacherName(null);
        } else {
            tTeacherTask.setTeacherName(username);
        }
        return tTeacherTaskMapper.selectTTeacherTaskList(tTeacherTask);
    }

    /**
     * 新增我的任务
     * 
     * @param tTeacherTask 我的任务
     * @return 结果
     */
    @Override
    public int insertTTeacherTask(TTeacherTask tTeacherTask)
    {
        tTeacherTask.setCreateTime(DateUtils.getNowDate());
        return tTeacherTaskMapper.insertTTeacherTask(tTeacherTask);
    }

    /**
     * 修改我的任务
     * 
     * @param tTeacherTask 我的任务
     * @return 结果
     */
    @Override
    public int updateTTeacherTask(TTeacherTask tTeacherTask)
    {
        return tTeacherTaskMapper.updateTTeacherTask(tTeacherTask);
    }

    /**
     * 批量删除我的任务
     * 
     * @param ids 需要删除的我的任务主键
     * @return 结果
     */
    @Override
    public int deleteTTeacherTaskByIds(Long[] ids)
    {
        return tTeacherTaskMapper.deleteTTeacherTaskByIds(ids);
    }

    /**
     * 删除我的任务信息
     * 
     * @param id 我的任务主键
     * @return 结果
     */
    @Override
    public int deleteTTeacherTaskById(Long id)
    {
        return tTeacherTaskMapper.deleteTTeacherTaskById(id);
    }

    /**
     * 根据任务标题查询是否重复
     * @param title
     */
    @Override
    public TTeacherTask selectTTeacherTaskByName(String title) {
        return tTeacherTaskMapper.selectTTeacherTaskByName(title);
    }

    /**
     * 完成任务
     * @param teacherTaskDto
     */
    @Override
    public void completeTask(TeacherTaskDto teacherTaskDto) {
        // 参数检验 JSR303检验
        // 从 teacherTaskDto 中取出参数
        Long id = teacherTaskDto.getId();
        String description = teacherTaskDto.getDescription();
        Date completeTime = teacherTaskDto.getCompleteTime();

        // 完成任务，先根据id查询出信息，修改任务状态，添加完成说明
        TTeacherTask tTeacherTask = tTeacherTaskMapper.selectTTeacherTaskById(id);
        if(tTeacherTask.getStatus() == 2L){
            throw new ServiceException("该任务已完成，不能重复完成！");
        }

        tTeacherTask.setStatus(2L);
        tTeacherTask.setCompleteTime(completeTime);
        tTeacherTask.setDescription(description);
        tTeacherTaskMapper.updateTTeacherTask(tTeacherTask);

    }
}
